/*=========================================================================

Program:   Visualization Toolkit
Module:    $RCSfile: vtkKdTreeEx.h,v $

Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.  See the above copyright notice for more information.

=========================================================================*/


#ifndef __vtkKdTreeEx_h
#define __vtkKdTreeEx_h

#include "vtkLocator.h"
#include "vtkKdTree.h"

class vtkTimerLog;
class vtkIdList;
class vtkIdTypeArray;
class vtkIntArray;
class vtkPointSet;
class vtkPoints;
class vtkCellArray;
class vtkCell;
class vtkKdNode;
class vtkBSPCuts;
class vtkBSPIntersections;
class vtkDataSetCollection;

class VTK_EXPORT vtkKdTreeEx : public vtkKdTree
{
public:
	vtkTypeRevisionMacro(vtkKdTreeEx, vtkKdTree);

	static vtkKdTreeEx *New();

	vtkIdType FindClosestPoint(double *x, double &dist2);
	vtkIdType FindClosestPoint(double x, double y, double z, double &dist2);
protected:
	int FindClosestPointInSphereEx(double x, double y, double z, double radius,
		int skipRegion, double &dist2);

	vtkKdTreeEx();
	~vtkKdTreeEx(){};


protected:

	vtkKdTreeEx(const vtkKdTreeEx&); // Not implemented
	void operator=(const vtkKdTreeEx&); // Not implemented
};
#endif
